$(document).ready(function(){
	
	//Esconde o painel de erros ao carregar a página.
	$("#painelErro").hide();
	
	//Submete o formul�rio para salvar uma secretaria, tamb�m realiza a validação dos campos na tela.
	$("#btnSalvarMovimento").click(function(){
		 var submit = validarCampos();
		 if(submit){
			 $("#painelErro").hide();
			 $("#formularioIncluirMovimento").submit();
		 }else{
			
			 $("#painelErro").show();
		 }
	});
	
	
	
	$("#inputMatriculaContrato").blur(function(){
		$.ajax({  
            type: "GET",   
            url: "../movimentacao/buscar-contrato/"+$('#inputMatriculaContrato').val(),  
            success:   function(response){
	            	 $("#inputMatriculaContrato").val(response.matriculaServidor);
	            	 $("#inputNomeServidor").val(response.nomeServidor);
	            	 $("#inputValor").val(response.salarioBase);
	            	 $("#tbodyTabelaMovimentos > tr").remove();
		     },
		     error: function(e){
		    	 	 alert('N�o foi encontrado nenhum servidor com a matr�cula informada.');
			    	 $("#inputMatriculaContrato").val("");
			    	 $("#inputNomeServidor").val("");
			    	 $("#inputValor").val("");
			    	 $("#tbodyTabelaMovimentos > tr").remove();
		     }
        });  	
	});
	
	
	
	//Fun��o que valida os campos obrigat�rios.
	validarCampos = (function() {
		var mensagemErro = " Os seguintes campos s�o obrigat�rios: ";
		var retorno = true;
		
		if($("#inputValor").val() == ""){
			mensagemErro = mensagemErro + " #Valor";
			retorno = false;
		}
		
		if($("#inputServidor :selected").text().trim() == "Selecione"){
			mensagemErro = mensagemErro + " #Servidor ";
			retorno = false;
		}
		if($("#inputFuncional :selected").text().trim() == "Selecione"){
			mensagemErro = mensagemErro + " #Cargo Funcional ";
			retorno = false;
		}
		if($("#inputTrabalhista :selected").text().trim() == "Selecione"){
			mensagemErro = mensagemErro + " #Cargo Trabalhista ";
			retorno = false;
		}
		if($("#inputEvento :selected").text().trim() == "Selecione"){
			mensagemErro = mensagemErro + " #Evento ";
			retorno = false;
		}
		$("#camposObrigatorios").text(mensagemErro);		
		return retorno;
	});
	
	//Mascaras dos campos
	$("#inputValor").maskMoney({showSymbol:true, symbol:"R$", decimal:",", thousands:""});
	
	
	
	//Adicionar linhas de movimentos na tabela.
	$("#btnAdicionarMovimento").click(function(){
		
		//realiza consulta para retornar valores do evento.
		$.ajax({  
            type: "GET",   
            url: "../movimentacao/buscar-evento/"+$('#inputEvento').val(),  
            success:   function(response){
            	      	
            	    var tr = $('<tr></tr>');                   	
                 	var tdNome = $('<td width="8%">'+response.codigo+'</td>').attr('id','codigoEvento');
                 	tdNome.appendTo(tr);
                 	
                 	var tdCargoFuncional = $('<td width="40%">'+response.descricao+'</td>').attr('id','descricaoEvento');
                 	tdCargoFuncional.appendTo(tr);
                 	
                 	
                 	if(response.tipoEventoEnum == 'PROVENTO'){
                 		var tdCargoTrabalhista = $('<td width="21%">'+response.percentualTransiente+'</td>').attr('id','proventos');
                     	tdCargoTrabalhista.appendTo(tr);
                     	
                    	var tdEvento = $('<td width="21%"> 0,00 </td>').attr('id','descontos');
                     	tdEvento.appendTo(tr);                     	
                 	}else{
                 		var tdCargoTrabalhista = $('<td width="21%"> 0,00 </td>').attr('id','proventos');
                     	tdCargoTrabalhista.appendTo(tr);
                     	
                    	var tdEvento = $('<td width="21%">'+ response.percentualTransiente +'</td>').attr('id','descontos');
                     	tdEvento.appendTo(tr);                 		
                 	}                	
                 
                                	     	
                 	var tdRemoverMovimento = $('<td></td>').attr('id','remocao');
                 	var linkRemoverMovimento = $('<a href="#" class="linkRemoverMovimento"></a>');
                 	var imgRemoverMovimento = $('<img class="imgRemoverMovimento" alt="Remover movimento" />');
                 	imgRemoverMovimento.attr('src','../resources/assets/_layout/images/icons/excluir.png' );
                 	imgRemoverMovimento.appendTo(linkRemoverMovimento);
                 	linkRemoverMovimento.appendTo(tdRemoverMovimento);     	
                 	tdRemoverMovimento.appendTo(tr);
                 	
                 	tr.appendTo("#tabelaMovimentos");
                 	
                 	
                 	//Faz a chamada para recalcular os valores da movimentacao
                 	calcularValoresTotais();
                 	                 	          	 
		         },
		         error: function(e){
		    	  alert('Error: ' + e);
		         }
        });  	
       
	});
	
	$(".linkRemoverMovimento").click(function(){
		
	});
	
	
	function calcularValoresTotais(){
		//Array de objetos(movimento) para cada linha da tabela.
     	var jsonEventoMovimentacao = {};
		var arrayJson = [];
   		 $('#tabelaMovimentos tbody tr').each(function(i, linha) {
   			 arrayJson.push(
   					 {
   						 idEvento:$(linha).children('#codigoEvento').text(),
   						 });
   					
   	     });
   		 //JSON com id do titular e um array de dependentes.
   		jsonEventoMovimentacao.salarioBase = $("#inputValor").val();		
   		jsonEventoMovimentacao.jsonEventoCalcular = arrayJson;
 		var json = JSON.stringify(jsonEventoMovimentacao);
     	$.ajax({
			   url: '../movimentacao/calcular-valores/',
			   type: 'POST',
			   contentType: 'application/json',
			   data: json,
			   dataType: 'json',
			   success: function (response){         				   
				   $("#totalSalarioFamilia").text(response.totalSalarioFamilia);
				   $("#totalInss").text(response.totalInss);
				   $("#totalIrpf").text(response.totalIrpf);
				   $("#totalProventos").text(response.totalProventos);       
				   $("#totalDescontos").text(response.totalDescontos); 
				   $("#totalLiquido").text(response.totalLiquido); 
			   }
			});
	}	
	
	
});